package exception;

/**
 * throw关键字可以主动向方法外抛出一个异常
 * 通常下列情况我们会进行这个操作：
 * 1.程序出现了异常，但是该异常不应该在当前方法中被处理时，可以将其抛出给上一层调用者(责任制问题)
 * 2.程序可以运行，但是不满足当前业务场景，可以当做异常抛出给调用者告知(本案例就是这样的情况)
 */
public class ThrowDemo {
    //实际开发中永远不应当在main方法上写throws！！！！！
    public static void main(String[] args) {
        Person p = new Person();
        //p.setAge(18);
        /*
        当我们调用一个含有throws声明异常抛出的方法时，编译器要求必须处理该异常
        否则编译不通过
        处理方式有两种：
        1.主动使用try-catch捕获并处理该异常
        2.继续在当前方法上使用throws继续向外抛出
        具体选取哪种应该还是责任制问题
         */
//        try {
//            p.setAge(1000); //满足语法，但是不满足业务场景
//
//        } catch (Exception e) {
//            System.out.println("出错了");
//        }
        try {
            p.setAge(1000);//满足语法，但是不满足业务场景
        } catch (IllegalAgeException e) {
            e.printStackTrace();
        }
        System.out.println("此人年龄:"+p.getAge());
    }
}
